[GitHub Actions] aws-actions/configure-aws-credentials@v1がdeprecatedとなっていたのでアップデート対応する
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、GitHub Actionsでaws-actions/configure-aws-credentials@v1
がdeprecatedとなっていたのでアップデート対応してみました。
先に結論
GitHub ActionsのWorkflowでaws-actions/configure-aws-credentials
の@v1
を使用している場合は、@v1-node16
を使用するようにします。
- name: Assume Role - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v1-node16 with: role-to-assume: ${{ env.AWS_OIDC_ROLE_ARN }} aws-region: ${{ env.AWS_REGION }}
aws-actions/configure-aws-credentials
はAWSが公式提供しているActionsで、AssumeRoleによるクレデンシャルの取得をシンプルに実装することができます。
事象、原因
GitHub ActionsのWorkflow実行でいつの間にかWarningが2つ出ていることに気が付きました。
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: aws-actions/configure-aws-credentials@v1
The
set-output
command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
前者のWarningは、Node12でActionが実行されるaws-actions/configure-aws-credentials@v1
はdeprecatedとなっているため、Node16を使うように促されています。記述中のURLによると、Node12は2022年4月以降は非サポートとなるため、GitHub Actionsでも2023年の夏を期限としてすべてのActionがNode16で実行されるようにするとのことです。よってNode12でActionが実行されているWorkflowでは2022/9/27以降Warningを出しているとのことです。
一方で後者のWarningは、記述中のURLによると、save-state
およびset-output
を使用すると意図しないデータ収集が行われる可能性があるため、これらのコマンドを使用しているWorkflowでは2022/10/11以降Warningを出しているとのことです。
save-state
およびset-output
に関しては、Workflowで次のように使用している場合は、
- name: Save state run: echo "::save-state name={name}::{value}" - name: Set output run: echo "::set-output name={name}::{value}"
次のようにGITHUB_STATE
およびGITHUB_OUTPUT
を使用するように修正すれば良いとのことです。
- name: Save state run: echo "{name}={value}" >> $GITHUB_STATE - name: Set output run: echo "{name}={value}" >> $GITHUB_OUTPUT
アップデート対応
前者のWarningでaws-actions/configure-aws-credentials@v1
をアップデートするようにあったので対応してみます。
ドキュメントを見ると、NOTICE: node12 deprecation warningという項目で、Warningを抑制するためにはaws-actions/configure-aws-credentials@v1-node16
を使うように案内されていますね。
GitHub actions has recently started throwing warning messages regarding the deprecation of Node 12. If you would like to stop seeing this warning, configure your action to use
aws-actions/configure-aws-credentials@v1-node16
. Both the v1 branch and the v1-node16 branch will receive the same updates moving forward.
というわけでWorkflow fileを修正して使用するaws-actions/configure-aws-credentials
をアップデートします。
- name: Assume Role - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v1-node16 with: role-to-assume: ${{ env.AWS_OIDC_ROLE_ARN }} aws-region: ${{ env.AWS_REGION }}
するとWarningを抑制することができました。
引き続きWarningが出る場合
別のWorkflowでは、aws-actions/configure-aws-credentials
のアップデート後も、Node.js 12 actions are deprecated.
のWarningが引き続き出ていました。Workflow内で使用しているjossef/action-set-json-field@v1というActionsで対応が必要なようです。
Node.js 12 actions deprecation warning on github - General Usage - Julia Programming Languageによると、actions/checkout
を@v2
から@v3
へアップデート対応していない場合にもNode.js 12 actions are deprecated.
Warningが出るとのことです。
そしてjossef/action-set-json-field
については@2.1
へアップデートすることにより、Actions内で実行されているactions/checkout
を@v3
へアップデートできるとのことです。
この対応をしたらWarningを抑制することができました。
このように、今回のWarningを抑制するためには、aws-actions/configure-aws-credentials
以外にもNode.js12
やset-output
を使用するすべてのActionsでアップデート対応をする必要があります。もしActions側が未対応の場合は、アップデート対応されるまで待つか、自身がコントリビュートするか、他のActionsへの乗り換えを検討するようにしましょう。
以上